﻿using Dlls;
using Persistencia;
using Persistencia.Tabelas;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using UI.Views.Consultas;

namespace UI.Lancamentos.Produtos_Estoque
{
    /// <summary>
    /// Interaction logic for frmCotacao.xaml
    /// </summary>
    public partial class frmCotacao : Window
    {
        private Context context; 
        private Persistencia.Cotacao cotacao;
        private CotacaoDLL cotacaoDll;
        private Persistencia.CotacaoItem cotacaoItems;
        private CotacaoItemsDLL cotacaoItemDll;
        private List<CotacaoItems> listCotacaoItems;
        private List<CotacaoItem> listCotacaoItens;
        private Produtos produto;
        private ProdutosDLL produtodDll;
      //  private Pessoa pessoa;
        private PessoasDLL pessoasDll;
              
        public frmCotacao()
        {
            context = new Context();
            cotacao = new Persistencia.Cotacao();
            cotacaoDll = new CotacaoDLL();
            cotacaoItems = new Persistencia.CotacaoItem();
            cotacaoItemDll = new CotacaoItemsDLL();
            listCotacaoItems = new List<CotacaoItems>();
            pessoasDll = new PessoasDLL();
          //  pessoa = new Pessoa();
            produto = new Produtos();
            produtodDll = new ProdutosDLL();
           // cbxQtdFornecedores.SelectedIndex = 0; 
            //VerificaCombox();
            InitializeComponent();
        }

        private void InsertOrUpdate(object sender, RoutedEventArgs e)
        {
            if (txtDataCotacao.Text!="")
            {
                cotacao.DataCriacao = Convert.ToDateTime(txtDataCotacao.Text);
            }
            else
            {
                MessageBox.Show("Data não pode ser Vazia");
            }
            cotacaoDll.Insert(cotacao);
            //Inserindo Itemns na Cotação
            foreach (CotacaoItem item in listCotacaoItens)
            {
                item.CodCotacao = cotacao.Codigo;
                //cotacaoItemDll.Insert(item);
                context.CotacaoItem.InsertOnSubmit(item);
            }
            context.SubmitChanges();
            cotacao = new Persistencia.Cotacao();
            listCotacaoItens = new List<CotacaoItem>();

            GridViewItems.ItemsSource = null;
            MessageBox.Show("Cotação criada");
            
            Classes.LimpaCampos.reset(0, this);
        }

        private void InserirItensGrid(object sender, RoutedEventArgs e)
        {
            if( txtNomeProduto.Text.Length == 0 )
            {
                MessageBox.Show("Selecione o Produto!");
                txtCodProduto.Focus();
            }
            else if (txtQtd.Text.Length == 0)
            {
                MessageBox.Show("Preencha a quantidade a ser orçada!");
                txtQtd.Focus();
            }
            else
            { 

                CotacaoItem cotacaoItem = new CotacaoItem();
                cotacaoItem.CodProduto = int.Parse(txtCodProduto.Text);
                cotacaoItem.Quantidade = int.Parse(txtQtd.Text);
                cotacaoItem.Produto = context.Produtos.FirstOrDefault(p => p.Codigo == cotacaoItem.CodProduto);

                AdicionarItemsCotacao(cotacaoItem);
                GridViewItems.ItemsSource = listCotacaoItens;
                Classes.LimpaCampos.reset(0, this);
            }
        }

        private void AdicionarItemsCotacao(CotacaoItems item)
        {
            listCotacaoItems.Add(item);
        }
        private void AdicionarItemsCotacao(CotacaoItem item)
        {
            listCotacaoItens.Add(item);
        }

        private void ValidaFornecedores(object sender, SelectionChangedEventArgs e)
        {
            
        }

        private void BuscarProduto(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (txtCodProduto.Text=="")
                {
                    global.ReturnProduto = null;
                    frmConsultaPadrao consulta = new frmConsultaPadrao("Produto");
                    consulta.ShowDialog();
                    if (global.ReturnProduto != null)
                    {
                        txtCodProduto.Text = global.ReturnProduto.Codigo.ToString();
                        txtNomeProduto.Text = global.ReturnProduto.Nome.ToString();
                    }
                }
                else if (txtCodProduto.Text!="")
                {
                    Produto produto = produtodDll.getProduto(int.Parse(txtCodProduto.Text));
                    if (produto != null)
                    {
                        txtCodProduto.Text = produto.Codigo.ToString();
                        txtNomeProduto.Text = produto.Nome.ToString();
                    }
                    else
                    {
                        MessageBox.Show("Produto não encontrado");
                    }
                }
            }
        }
     
    }
}
